package com.vecspace.core.support.auth;

import java.lang.annotation.Documented;
import java.lang.annotation.ElementType;
import java.lang.annotation.Inherited;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/*
* 元注解@Target,@Retention,@Documented,@Inherited
*
*      @Target 表示该注解用于什么地方，可能的 ElemenetType 参数包括：
*          ElemenetType.CONSTRUCTOR 构造器声明
*          ElemenetType.FIELD 域声明（包括 enum 实例）
*          ElemenetType.LOCAL_VARIABLE 局部变量声明
*          ElemenetType.METHOD 方法声明
*          ElemenetType.PACKAGE 包声明
*          ElemenetType.PARAMETER 参数声明
*          ElemenetType.TYPE 类，接口（包括注解类型）或enum声明
*         
*      @Retention 表示在什么级别保存该注解信息。可选的 RetentionPolicy 参数包括：
*          RetentionPolicy.SOURCE 注解将被编译器丢弃
*          RetentionPolicy.CLASS 注解在class文件中可用，但会被VM丢弃
*          RetentionPolicy.RUNTIME VM将在运行期也保留注释，因此可以通过反射机制读取注解的信息。
*         
*      @Documented 将此注解包含在 javadoc 中
*     
*      @Inherited 允许子类继承父类中的注解
*   
*/  

@Target(ElementType.METHOD)   
@Retention(RetentionPolicy.RUNTIME)   
@Documented
@Inherited
public @interface TAuth {
	/**功能ID*/
	public String funcId() default "";
	
	/**是不是需要授权才能访问。true：授权才能访问包括[只读]、[读写]， false：不授权也能访问**/
	public boolean needAuthorized() default false;
	

	/**是否需要编辑权限才能访问。true:即只能授予[读写]权限的才能访问 , false:其他授权或者没有授权也可以访问**/
	public boolean needEditAuth() default false;
}
